home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / src / exampleCode / viewkit / xcontact / parody / node.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-08-02  |  1.8 KB  |  62 lines

  1. // ------------- node.h
  2.  
  3. #ifndef NODE_H
  4. #define NODE_H
  5.  
  6. typedef unsigned NodeNbr;
  7. const int nodelength = 128;
  8. const int nodedatalength = nodelength - sizeof(NodeNbr);
  9. const int fileheadersize = sizeof(NodeNbr) * 2;
  10.  
  11. // ============================
  12. // Node File Header Record
  13. // ============================
  14. class FileHeader    {
  15.     NodeNbr deletednode;         // first deleted node
  16.     NodeNbr highestnode;         // highest assigned node
  17.     NodeNbr origdeletednode; // original first deleted node
  18.     NodeNbr orighighestnode; // original highest assigned node
  19. protected:
  20.     fstream nfile;
  21.     pBool newfile;                 // true if building new node file
  22. public:
  23.     FileHeader(pString filename);
  24.     virtual ~FileHeader();
  25.     virtual void Flush();
  26.     void SetDeletedNode(NodeNbr node) { deletednode = node; }
  27.     NodeNbr DeletedNode() { return deletednode; }
  28.     void SetHighestNode(NodeNbr node) { highestnode = node; }
  29.     NodeNbr HighestNode() { return highestnode; }
  30.     NodeNbr NewNode();
  31.     fstream& Nfile() { return nfile; }
  32.     void ResetNewFile() { newfile = pFalse; }
  33. };
  34.  
  35. // ============================
  36. // Node Record
  37. // ============================
  38. class Node    {
  39.     NodeNbr nextnode;
  40. protected:
  41.     FileHeader *owner;
  42.     NodeNbr nodenbr;    // current node number
  43.     pBool nodechanged;    // true if the node changed
  44.     pBool deletenode;    // true if the node is being deleted
  45. public:
  46.     Node(FileHeader *hd = NULL, NodeNbr node = 0);
  47.     virtual ~Node();
  48.     Node& operator=(Node &node);
  49.     void SetNextNode(NodeNbr node)
  50.                 { nextnode = node; MarkNodeChanged(); }
  51.     NodeNbr NextNode()        { return nextnode; }
  52.     void SetNodeNbr(NodeNbr node) { nodenbr = node; }
  53.     NodeNbr GetNodeNbr()      { return nodenbr; }
  54.     void MarkNodeDeleted()    { deletenode = pTrue; }
  55.     void MarkNodeChanged()     { nodechanged = pTrue; }
  56.     pBool NodeChanged()        { return nodechanged; }
  57.     long NodeAddress();
  58.     virtual int NodeHeaderSize() { return sizeof(NodeNbr); }
  59. };
  60.  
  61. #endif
  62.